class Funcionario < ActiveRecord::Base
  has_one :dado_pessoal, :dependent => :destroy
  has_many :funcionario_projeto
  has_many :funcionario_tarefa

  accepts_nested_attributes_for :dado_pessoal

  attr_accessor :senha
  before_save :encriptar_senha

  validates :login, :uniqueness => true, :presence => true, :length => { :minimum => 6 }
  validates :senha, :presence => true, :length => { :minimum => 6 }

  def encriptar_senha
    if senha.present?
      self.password_salt = BCrypt::Engine.generate_salt
      self.password_hash = BCrypt::Engine.hash_secret(senha, password_salt)
    end
  end

  def self.authenticate(login, senha)
    user = find_by_login(login)
    if user && user.password_hash == BCrypt::Engine.hash_secret(senha, user.password_salt)
      user
    else
      nil
    end
  end
end
